package com.ncp.model.biz.cart;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import com.ncp.model.entity.cart.CartBean;


/**
 * 购物车
 */
public class ShoppingCart {
	private Map<String,CartBean> cartMap = null;  //保存Product的Map
	
	/**
	 * 购物车构造函数
	 */
	public ShoppingCart(){
		cartMap = new HashMap<String,CartBean>();
	}
	
	/**
	 * 取得存放产品的cartMap
	 */
	public Map<String,CartBean> getCartMap(){
		return this.cartMap;
	}
	
	/**
	 * 向购物车中添加产品
	 */
	public boolean addProduct(String productID, int productNum){
		if(existProduct(productID)){ // 产品已存在则增加数量
			CartBean cartBean = cartMap.get(productID);
			cartBean.setProductNumOfCart(cartBean.getProductNumOfCart() + productNum);
			return true;
		}
		else{ // 否则新加入该产品
			CartBean cartBean = new CartBean(productID,productNum);
			if(cartBean.getProductID()==null){
				return false; //数据库中没有该产品
			}else{
				cartMap.put(productID, cartBean);
				return false;
			}
		}
	}
	
	/**
	 * 检查购物车里是否已存在该产品
	 */
	public boolean existProduct(String productID){
		Iterator<String> hmkey = cartMap.keySet().iterator();
		while(hmkey.hasNext()){
			String pid = hmkey.next();
			if(pid.equals(productID)){
				return true;
			}
		}
		return false;
	}
	
	/**
	 * 从购物车中移除指定产品
	 */
	public void delProduct(String productID){
		cartMap.remove(productID);
	}

	/**
	 * 获取购物车产品数量
	 */
	public int getProductNum(){
		int productNum = 0;
		Iterator<CartBean> hmEntry = cartMap.values().iterator();
		while(hmEntry.hasNext()){
			productNum += hmEntry.next().getProductNumOfCart();
		}
		return productNum;
	}
	
	/**
	 * 统计购物车商品总价
	 */
	public double getTotalprice(){
		double totalPrice = 0.0;
		Iterator<String> hmkey = cartMap.keySet().iterator();
		CartBean cartBean = null;
		while(hmkey.hasNext()){
			cartBean = cartMap.get(hmkey.next());
			totalPrice += cartBean.getRetailPrice() * cartBean.getProductNumOfCart();
		}
		return totalPrice;
	}
	
	/**
	 * 清空购物车
	 */
	public void clearCart(){
		cartMap.clear();
	}
	

}
